package com.atguigu.advanced.jvm;

/**
 * Package: com.atguigu.advanced.jvm
 *
 * @Description: 该类用于演示Java中的类加载器（ClassLoader）层次结构，
 * 包括系统类加载器、扩展类加载器和引导类加载器的关系。
 * 通过此类可以查看不同层级类加载器的实例及其加载的类示例。
 * @Author xiongkunYang
 * @Create 2025/5/16 17:05
 */


public class Test02 {

    /**
     * 输出结果：
     * System Class Loader: jdk.internal.loader.ClassLoaders$AppClassLoader@63947c6b
     * Extension Class Loader: jdk.internal.loader.ClassLoaders$PlatformClassLoader@6d311334
     * Bootstrap Class Loader: null
     * ClassLoader for String class: null
     * ClassLoader for this class (Test02): jdk.internal.loader.ClassLoaders$AppClassLoader@63947c6b
     */
    public static void main(String[] args) {
        // 获取系统类加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println("System Class Loader: " + systemClassLoader);

        // 获取系统类加载器的父类加载器，即扩展类加载器
        ClassLoader extensionClassLoader = systemClassLoader.getParent();
        System.out.println("Extension Class Loader: " + extensionClassLoader);

        // 获取扩展类加载器的父类加载器，即引导类加载器
        // 注意：由于引导类加载器是由本地代码实现的，所以在Java中显示为null
        ClassLoader bootstrapClassLoader = extensionClassLoader.getParent();
        System.out.println("Bootstrap Class Loader: " + bootstrapClassLoader);

        // 可以进一步测试特定类的类加载器
        System.out.println("ClassLoader for String class: " + String.class.getClassLoader());
        System.out.println("ClassLoader for this class (Test02): " + Test02.class.getClassLoader());
    }

}